
import re


class JsonUtil:
    @staticmethod
    def reshape(json_content: str) -> str:
        """
        对输入的 JSON 字符串进行标准化处理，去除无效内容并转换特殊标记。

        参数:
            json_content (str): 原始 JSON 字符串内容，可能包含 Markdown 格式、非法字符或 Python 布尔值。

        返回:
            str: 标准化的 JSON 字符串，可用于后续解析。
        
        处理步骤说明:
            1. 去除首尾空白字符。
            2. 删除深度思考模式下的内容（以 '</think>' 结束的部分）。
            3. 如果字符串以 ```json 包裹，则去除该标记。
            4. 去除不可打印 ASCII 字符。
            5. 将 Python 的 True/False 转换为 JSON 的 true/false。
        """
        
        # 去除字符串首尾空白字符
        json_content = json_content.strip()
        # 删除深度思考模式下的内容（以「</think>
        json_content = re.sub(r'</think>.*?</think>', '', json_content, flags=re.DOTALL)
        # 去除 ```json ``` 标记
        if json_content.startswith('```json\n') and json_content.endswith('\n```'):
            # 截取 ```json 和 ``` 之间的内容
            json_content = json_content[7:-3]
            # 再次去除首尾空白字符
            json_content = json_content.strip()
            # 去除不可打印的ASCII字符
            json_content = re.sub(r'[\x00-\x1F\x7F]', '', json_content)
            # 将 Python 的 True 转换为 JSON 的 true
            json_content = re.sub(r'\bTrue\b', 'true', json_content)
            # 将 Python 的 False 转换为 JSON 的 false
            json_content = re.sub(r'\bFalse\b', 'false', json_content)
            # 最后再次去除字符串首尾空白字符
            json_content = json_content.strip()
        # 返回处理后的 JSON 字符串
        return json_content
    
    def reshape_markdown(content: str) -> str:
        """
        对输入的 markdown 字符串进行标准化处理，去除无效内容并转换特殊标记。

        参数:
            content (str): 原始markdown字符串内容，可能包含 Markdown 标记。

        返回:
            str: 标准化的 markdown 字符串。
        """
        
        # 去除字符串首尾空白字符
        content = content.strip()
        # 删除深度思考模式下的内容（以「</think>
        content = re.sub(r'</think>.*?</think>', '', content, flags=re.DOTALL)
        # 去除 ```markdown ``` 标记
        if content.startswith('```markdown\n') and content.endswith('\n```'):
            # 截取 ```json 和 ``` 之间的内容
            content = content[11:-3]
            # 再次去除首尾空白字符
            content = content.strip()
            # 去除不可打印的ASCII字符
            # 最后再次去除字符串首尾空白字符
            content = content.strip()
        # 返回处理后的 JSON 字符串
        return content
    
if __name__ == "__main__":
    t = JsonUtil.reshape_markdown("```markdown\n# 这是一个标题\n这是普通文本。\n```")
    print(t)